802A - Heidi and Library (easy) - CodeForces Solution


greedy *1800

Please click on ads to support us..

Python Code:

def I():
    return input()

def II():
    return int(input())

def MI():
    return map(int, input().split())

def LI():
    return list(input().split())

def LII():
    return list(map(int, input().split()))

def GMI():
    return map(lambda x: int(x) - 1, input().split())

def LGMI():
    return list(map(lambda x: int(x) - 1, input().split()))
from collections import Counter, defaultdict, deque
from heapq import nsmallest, nlargest, heapify, heappop, heappush
def main():
    n, k = LII()
    ids = LGMI()

    next_pos = [n] * n
    pos = [n] * n

    for i in range(n - 1, -1, -1):
        next_pos[i] = pos[ids[i]]
        pos[ids[i]] = i

    hpq = []
    cnt = 0
    vis = [0] * n
    ans = 0

    for i in range(n):
        while hpq and vis[hpq[0] % n] == 0:
            heappop(hpq)
        
        if vis[ids[i]] == 0:
            if cnt == k:
                vis[heappop(hpq) % n] = 0
                cnt -= 1
            vis[ids[i]] = 1
            
            heappush(hpq, -next_pos[i] * n + ids[i])
            cnt += 1
            ans += 1
        
        heappush(hpq, -next_pos[i] * n + ids[i])

    print(ans)
main()


Comments

Submit
0 Comments
More Questions

136. Single Number
169. Majority Element
119. Pascal's Triangle II
409. Longest Palindrome
1574A - Regular Bracket Sequences
1574B - Combinatorics Homework
1567A - Domino Disaster
1593A - Elections
1607A - Linear Keyboard
EQUALCOIN Equal Coins
XOREQN Xor Equation
MAKEPAL Weird Palindrome Making
HILLSEQ Hill Sequence
MAXBRIDGE Maximise the bridges
WLDRPL Wildcard Replacement
1221. Split a String in Balanced Strings
1002. Find Common Characters
1602A - Two Subsequences
1555A - PizzaForces
1607B - Odd Grasshopper
1084A - The Fair Nut and Elevator
1440B - Sum of Medians
1032A - Kitchen Utensils
1501B - Napoleon Cake
1584B - Coloring Rectangles
1562B - Scenes From a Memory
1521A - Nastia and Nearly Good Numbers
208. Implement Trie
1605B - Reverse Sort
1607C - Minimum Extraction